import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { fileURLToPath, URL } from 'url'

// https://vite.dev/config/
export default defineConfig({
  plugins: [vue()],
  define: {
    'import.meta.env.VITE_DEVICE_IP': JSON.stringify('192.168.4.222')
  },
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  build: {
    outDir: '../data', // 输出到当前目录外的 data 目录
    emptyOutDir: true, // 构建前清空输出目录
    assetsDir: '',
    // 启用最小化混淆
    minify: 'terser',
    terserOptions: {
      compress: {
        // 移除 console.log
        drop_console: false,
        // 移除 debugger 语句
        drop_debugger: true,
        // 纯函数的副作用优化
        // pure_funcs: ['console.log'],
        // 优化常量
        passes: 2
      },
      output: {
        // 压缩输出
        comments: false,
        // 美化输出
        beautify: false
      }
    },
    // CSS 代码分割，设为 false 可以将所有 CSS 内联到 JS 中减少请求
    cssCodeSplit: false,
    // 启用 CSS 最小化
    cssMinify: true,
    // 禁用源码映射
    sourcemap: false,
    // 设置较小的块大小阈值
    chunkSizeWarningLimit: 500,
    rollupOptions: {
      output: {
        // 自定义块名称格式，减少文件名长度
        entryFileNames: '[name].js',
        chunkFileNames: '[name].js',
        assetFileNames: '[name][extname]',
        manualChunks: {
          vendor: ['vue'],
          utils: ['/src/utils/dataUtils', '/src/utils/imgUtils', '/src/utils/sendUtils']
        }
      }
    }
  }
})
